700
How can I filter the check-boxes (method 1)

OBJECT column,editor,grid,items;

grid =  ObjectByName("AN1") ;
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Check");
	editor = _ObjectGetProperty( column , "Editor");
		_ObjectSetProperty( editor , "EditType", 19);
		_ObjectCallMethod(grid, "TemplatePut", "Dim ediObj")
		_ObjectCallMethod(grid, "TemplatePut", editor)
		_ObjectCallMethod(grid, "ExecuteTemplate", "ediObj.Option(17) = 1");
	_ObjectSetProperty( column , "DisplayFilterButton", -1);
	_ObjectSetProperty( column , "DisplayFilterPattern", 0);
	_ObjectSetProperty( column , "FilterType", 6);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", -1);
	_ObjectCallMethod( items , "AddItem", -1);
	_ObjectCallMethod( items , "AddItem", 0);
	_ObjectCallMethod( items , "AddItem", -1);
	_ObjectCallMethod( items , "AddItem", 0);
	_ObjectCallMethod( items , "AddItem", -1);
	_ObjectCallMethod( items , "AddItem", 0);

699
How can add a button to control

// ButtonClick event - Occurs when user clicks on the cell's button.
FUNCTION gridEvents_ButtonClick(OBJECT grid, INT Item, INT ColIndex, VARIANT Key)
	_ObjectCallMethod(grid, "TemplatePut", "Dim _ObObj,ColIndex,Item")
	_ObjectCallMethod(grid, "TemplatePut", _ObjectGetProperty( grid , "Items"))
	_ObjectCallMethod(grid, "TemplatePut", ColIndex)
	_ObjectCallMethod(grid, "TemplatePut", Item)
	Message( "ButtonClick" );
	Message( _ObjectCallMethod(grid, "ExecuteTemplate", "_ObObj.CellCaption(Item,ColIndex)") );
	Message( Key );
END

OBJECT column,columns,editor,grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "DefaultItemHeight", 22);
_ObjectSetProperty( grid , "HeaderHeight", 22);
_ObjectSetProperty( grid , "Appearance", 0);
_ObjectSetProperty( grid , "DrawGridLines", -2);
_ObjectSetProperty( grid , "ScrollBySingleLine", 0);
_ObjectCallMethod( grid , "Images", "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq" +
	"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
	"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
	"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
_ObjectCallMethod(grid, "ExecuteTemplate", "HTMLPicture(`pic1`) = `c:\exontrol\images\auction.gif`");
columns = _ObjectGetProperty( grid , "Columns");
	column = _ObjectCallMethod( columns , "Add", "Type");
		_ObjectSetProperty( column , "Width", 48);
		_ObjectCallMethod(grid, "TemplatePut", "Dim colObj")
		_ObjectCallMethod(grid, "TemplatePut", column)
		_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(17) = 1");
	column = _ObjectCallMethod( columns , "Add", "Appearance");
		_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(17) = 1");
		_ObjectSetProperty( column , "Alignment", 1);
		_ObjectSetProperty( column , "HeaderAlignment", 1);
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Items.<b>CellHasButton</b> property");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = `Button <b>1</b>`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHasButton(h,1) = True");
	h = _ObjectCallMethod( items , "AddItem", "Items.<b>CellButtonAutoWidth</b> property");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = ` Button <b>2</b> `");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHasButton(h,1) = True");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellButtonAutoWidth(h,1) = True");
	h = _ObjectCallMethod( items , "AddItem", "Items.<b>CellHasButton</b> property");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = ` <img>2</img>Button <b>3</b> `");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHasButton(h,1) = True");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellButtonAutoWidth(h,1) = True");
	h = _ObjectCallMethod( items , "AddItem", "Items.<b>CellHasButton</b> property");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemHeight(h) = 32");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = ` <img>2</img>Button <b>4</b> <img>pic1</img> `");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHasButton(h,1) = True");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellButtonAutoWidth(h,1) = True");
	h = _ObjectCallMethod( items , "AddItem", "Items.<b>CellHasButton</b> in splitted cells");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = ` Button <b>5.1</b> `");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHasButton(h,1) = True");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellButtonAutoWidth(h,1) = True");
	s = _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SplitCell(h,1)");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,s")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", s)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(0,s) = ` Button <b>5.2</b> `");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHasButton(0,s) = True");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellButtonAutoWidth(0,s) = True");
	h = _ObjectCallMethod( items , "AddItem", "Column.<b>Editor</b>, Items.<b>CellEditor</b>");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = `Visible when clicking the cell`");
	editor = _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellEditor(h,1)");
		_ObjectSetProperty( editor , "EditType", 1);
		_ObjectCallMethod( editor , "AddButton", "B1",1,0,"This is a bit of text that's shown when the cursor hovers the button B1");
		_ObjectCallMethod( editor , "AddButton", "B3",2,1,"This is a bit of text that's shown when the cursor hovers the button B3");
		_ObjectCallMethod( editor , "AddButton", "B4",1,1,"This is a bit of text that's shown when the cursor hovers the button B4");
		_ObjectSetProperty( editor , "ButtonWidth", 24);
	h = _ObjectCallMethod( items , "AddItem", "Column.<b>Editor</b>, Items.<b>CellEditor</b>");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = 3");
	editor = _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellEditor(h,1)");
		_ObjectSetProperty( editor , "EditType", 6);
		_ObjectCallMethod( editor , "AddItem", 1,"Flag 1");
		_ObjectCallMethod( editor , "AddItem", 2,"Flag 2");
		_ObjectCallMethod( editor , "AddItem", 4,"Flag 4");
		_ObjectCallMethod( editor , "AddItem", 8,"Flag 8");
		_ObjectCallMethod( editor , "AddButton", "C1",1,0,"This is a bit of text that's shown when the cursor hovers the button C1");
		_ObjectCallMethod( editor , "AddButton", "C3",2,0,"This is a bit of text that's shown when the cursor hovers the button C2");
		_ObjectCallMethod( editor , "AddButton", "C4",1,0,"This is a bit of text that's shown when the cursor hovers the button C3");
		_ObjectSetProperty( editor , "ButtonWidth", 24);
_ObjectCallMethod( grid , "EndUpdate");

698
The item is not getting selected when clicking the cell's checkbox. What should I do

// CellStateChanged event - Fired after cell's state has been changed.
FUNCTION gridEvents_CellStateChanged(OBJECT grid, INT Item, INT ColIndex)
	_ObjectCallMethod(grid, "TemplatePut", "Dim Item")
	_ObjectCallMethod(grid, "TemplatePut", Item)
	_ObjectCallMethod(grid, "ExecuteTemplate", "Items.SelectItem(Item) = True");
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod(grid, "ExecuteTemplate", "Columns.Add(`Check`).Def(0) = True");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", 0);
	_ObjectCallMethod( items , "AddItem", 1);
	_ObjectCallMethod( items , "AddItem", 2);
	_ObjectCallMethod( items , "AddItem", 3);

697
Is it possible to limit the height of the item while resizing

// AddItem event - Occurs after a new Item has been inserted to Items collection.
FUNCTION gridEvents_AddItem(OBJECT grid, INT Item)
	_ObjectCallMethod(grid, "TemplatePut", "Dim Item")
	_ObjectCallMethod(grid, "TemplatePut", Item)
	_ObjectCallMethod(grid, "ExecuteTemplate", "Items.ItemMinHeight(Item) = 18");
	_ObjectCallMethod(grid, "ExecuteTemplate", "Items.ItemMaxHeight(Item) = 72");
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ItemsAllowSizing", -1);
_ObjectSetProperty( grid , "ScrollBySingleLine", 0);
_ObjectSetProperty( grid , "BackColorAlternate", 15790320);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Names");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", "Mantel");
	_ObjectCallMethod( items , "AddItem", "Mechanik");
	_ObjectCallMethod( items , "AddItem", "Motor");
	_ObjectCallMethod( items , "AddItem", "Murks");
	_ObjectCallMethod( items , "AddItem", "Märchen");
	_ObjectCallMethod( items , "AddItem", "Möhren");
	_ObjectCallMethod( items , "AddItem", "Mühle");
_ObjectCallMethod(grid, "ExecuteTemplate", "Columns.Item(0).SortOrder = 1");
_ObjectCallMethod( grid , "EndUpdate");

696
Is it possible to copy the hierarchy of the control using the GetItems method

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Def");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Root");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
_ObjectCallMethod( grid , "PutItems", _ObjectCallMethod( grid , "GetItems", -1));

695
Is it possible to auto-numbering the children items but still keeps the position after filtering

OBJECT column,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", -1);
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Items");
	_ObjectSetProperty( column , "DisplayFilterButton", -1);
	_ObjectSetProperty( column , "FilterType", 240);
	_ObjectSetProperty( column , "Filter", "Child 2");
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Pos.1");
	_ObjectSetProperty( column , "FormatColumn", "1 ropos ''");
	_ObjectSetProperty( column , "Position", 0);
	_ObjectSetProperty( column , "Width", 32);
	_ObjectSetProperty( column , "AllowSizing", 0);
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Pos.2");
	_ObjectSetProperty( column , "FormatColumn", "1 ropos ':'");
	_ObjectSetProperty( column , "Position", 1);
	_ObjectSetProperty( column , "Width", 32);
	_ObjectSetProperty( column , "AllowSizing", 0);
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Pos.3");
	_ObjectSetProperty( column , "FormatColumn", "1 ropos ':|A-Z'");
	_ObjectSetProperty( column , "Position", 2);
	_ObjectSetProperty( column , "Width", 32);
	_ObjectSetProperty( column , "AllowSizing", 0);
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Pos.4");
	_ObjectSetProperty( column , "FormatColumn", "1 ropos '|A-Z|'");
	_ObjectSetProperty( column , "Position", 3);
	_ObjectSetProperty( column , "Width", 32);
	_ObjectSetProperty( column , "AllowSizing", 0);
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Pos.5");
	_ObjectSetProperty( column , "FormatColumn", "'<font Tahoma;7>' + 1 ropos '-<b>||A-Z'");
	_ObjectCallMethod(grid, "TemplatePut", "Dim colObj")
	_ObjectCallMethod(grid, "TemplatePut", column)
	_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(17) = 1");
	_ObjectSetProperty( column , "Position", 4);
	_ObjectSetProperty( column , "Width", 32);
	_ObjectSetProperty( column , "AllowSizing", 0);
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Pos.6");
	_ObjectSetProperty( column , "FormatColumn", "'<b>'+ 1 ropos '</b>:<fgcolor=FF0000>|A-Z|'");
	_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(17) = 1");
	_ObjectSetProperty( column , "Position", 5);
	_ObjectSetProperty( column , "Width", 48);
	_ObjectSetProperty( column , "AllowSizing", 0);
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Root 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "AddItem", "Root 2");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
_ObjectCallMethod( grid , "ApplyFilter");
_ObjectCallMethod( grid , "EndUpdate");

694
Is it possible to auto-numbering the children items too

OBJECT column,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Items");
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Pos.1");
	_ObjectSetProperty( column , "FormatColumn", "1 rpos ''");
	_ObjectSetProperty( column , "Position", 0);
	_ObjectSetProperty( column , "Width", 32);
	_ObjectSetProperty( column , "AllowSizing", 0);
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Pos.2");
	_ObjectSetProperty( column , "FormatColumn", "1 rpos ':'");
	_ObjectSetProperty( column , "Position", 1);
	_ObjectSetProperty( column , "Width", 32);
	_ObjectSetProperty( column , "AllowSizing", 0);
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Pos.3");
	_ObjectSetProperty( column , "FormatColumn", "1 rpos ':|A-Z'");
	_ObjectSetProperty( column , "Position", 2);
	_ObjectSetProperty( column , "Width", 32);
	_ObjectSetProperty( column , "AllowSizing", 0);
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Pos.4");
	_ObjectSetProperty( column , "FormatColumn", "1 rpos '|A-Z|'");
	_ObjectSetProperty( column , "Position", 3);
	_ObjectSetProperty( column , "Width", 32);
	_ObjectSetProperty( column , "AllowSizing", 0);
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Pos.5");
	_ObjectSetProperty( column , "FormatColumn", "'<font Tahoma;7>' + 1 rpos '-<b>||A-Z'");
	_ObjectCallMethod(grid, "TemplatePut", "Dim colObj")
	_ObjectCallMethod(grid, "TemplatePut", column)
	_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(17) = 1");
	_ObjectSetProperty( column , "Position", 4);
	_ObjectSetProperty( column , "Width", 32);
	_ObjectSetProperty( column , "AllowSizing", 0);
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Pos.6");
	_ObjectSetProperty( column , "FormatColumn", "'<b>'+ 1 rpos '</b>:<fgcolor=FF0000>|A-Z|'");
	_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(17) = 1");
	_ObjectSetProperty( column , "Position", 5);
	_ObjectSetProperty( column , "Width", 48);
	_ObjectSetProperty( column , "AllowSizing", 0);
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Root 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "AddItem", "Root 2");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
_ObjectCallMethod( grid , "EndUpdate");

693
Is it possible to cancel or discard the values during validation

// ValidateValue event - Occurs before user changes the cell's value.
FUNCTION gridEvents_ValidateValue(OBJECT grid, INT Item, INT ColIndex, VARIANT NewValue, INT Cancel)
	Message( "ValidateValue" );
	Message( NewValue );
	Message( "Change the Cancel parameter for ValidateValue event to accept/decline the newly value. " );
	Message( "The DiscardValidateValue restores back the previously values." );
	_ObjectCallMethod( grid , "DiscardValidateValue");
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "CauseValidateValue", -1);
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Date") , "Editor") , "EditType", 7);
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Text") , "Editor") , "EditType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
_ObjectCallMethod( grid , "EndUpdate");

692
Is it possible to validate the values of the cells only when user leaves the focused item
// ValidateValue event - Occurs before user changes the cell's value.
FUNCTION gridEvents_ValidateValue(OBJECT grid, INT Item, INT ColIndex, VARIANT NewValue, INT Cancel)
	Message( "ValidateValue" );
	Message( NewValue );
	Message( "Change the Cancel parameter for ValidateValue event to accept/decline the newly value. " );
	Cancel = -1;
	Message( "You can not leave the item/record until the Cancel is False." );
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "CauseValidateValue", 1);
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Date") , "Editor") , "EditType", 7);
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Text") , "Editor") , "EditType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
_ObjectCallMethod( grid , "EndUpdate");

691
We would like to validate the values of the cells. Is it possible

// ValidateValue event - Occurs before user changes the cell's value.
FUNCTION gridEvents_ValidateValue(OBJECT grid, INT Item, INT ColIndex, VARIANT NewValue, INT Cancel)
	Message( "ValidateValue" );
	Message( NewValue );
	Message( "Change the Cancel parameter for ValidateValue event to accept/decline the newly value." );
	Cancel = -1;
	Message( "You can not leave the cell until the Cancel is False." );
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "CauseValidateValue", -1);
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Date") , "Editor") , "EditType", 7);
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Text") , "Editor") , "EditType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(#1/1/2001#),1) = `text`");
_ObjectCallMethod( grid , "EndUpdate");

690
Is there any way to add auto-numbering

OBJECT column,columns,grid,items;

grid =  ObjectByName("AN1") ;
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectCallMethod( columns , "Add", "Items");
	column = _ObjectCallMethod( columns , "Add", "Pos");
		_ObjectSetProperty( column , "FormatColumn", "1 pos ''");
		_ObjectSetProperty( column , "Position", 0);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", "Item 1");
	_ObjectCallMethod( items , "AddItem", "Item 2");
	_ObjectCallMethod( items , "AddItem", "Item 3");

689
Does your control supports multiple lines tooltip

OBJECT grid;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod(grid, "ExecuteTemplate", "HTMLPicture(`pic1`) = `c:\exontrol\images\zipdisk.gif`");
_ObjectSetProperty( grid , "ToolTipDelay", 1);
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "tootip") , "ToolTip", "<br><font Tahoma;10>This</font> is a <b>multi-lines</b> tooltip assigned to a column. The tooltip supports built-in HTML tags, " +
	"icons and pictures.<br><br><br><img>pic1</img> picture ... <br><br>");

688
How can I prevent highlighting the column from the cursor - point

OBJECT grid;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( _ObjectGetProperty( grid , "VisualAppearance") , "Add", 1,"gBFLBCJwBAEHhEJAEGg4BI0IQAAYAQGKIYBkAKBQAGaAoDDUOQzQwAAxDKKUEwsACEIrjKCYVgOHYYRrIMYgBCMJhLEoaZLhEZRQiqDYtRDFQBSDDcPw/EaRZohGaYJ" +
	"gEgI=");
_ObjectCallMethod(grid, "ExecuteTemplate", "Background(32) = 16777216");
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "S") , "Width", 32);
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Level 1") , "LevelKey", 1);
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Level 2") , "LevelKey", 1);
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Level 3") , "LevelKey", 1);
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "E1") , "Width", 32);
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "E2") , "Width", 32);
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "E3") , "Width", 32);
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "E4") , "Width", 32);

687
Is it possible display numbers in the same format no matter of regional settings in the control panel

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectCallMethod(grid, "ExecuteTemplate", "Columns.Add(`Def`).Def(17) = 1");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", 100000.27);
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '') +  ' <fgcolor=808080>(default positive)'`");
	h = _ObjectCallMethod( items , "AddItem", 100000.27);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '2|.|3|,|1|1')`");
	h = _ObjectCallMethod( items , "AddItem", -100000.27);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '') +  ' <fgcolor=808080>(default negative)'`");
	h = _ObjectCallMethod( items , "AddItem", -100000.27);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '2|.|3|,|1|1')`");
_ObjectCallMethod( grid , "EndUpdate");

686
Is it possible to add a 0 for numbers less than 1 instead .7 to show 0.8

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectCallMethod(grid, "ExecuteTemplate", "Columns.Add(`Def`).Def(17) = 1");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", 0.27);
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '') +  ' <fgcolor=808080>(default)'`");
	h = _ObjectCallMethod( items , "AddItem", 0.27);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '|||||0') +  ' <fgcolor=808080>(Display no leading zeros)'`");
_ObjectCallMethod( grid , "EndUpdate");

685
How can I specify the format for negative numbers

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectCallMethod(grid, "ExecuteTemplate", "Columns.Add(`Def`).Def(17) = 1");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", -100000.27);
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '') +  ' <fgcolor=808080>(default)'`");
	h = _ObjectCallMethod( items , "AddItem", -100000.27);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '||||1') +  ' <fgcolor=808080>(Negative sign, number; for example, -1.1)'`");
_ObjectCallMethod( grid , "EndUpdate");

684
Is it possible to change the grouping character when display numbers

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectCallMethod(grid, "ExecuteTemplate", "Columns.Add(`Def`).Def(17) = 1");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", 100000.27);
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '') +  ' <fgcolor=808080>(default)'`");
	h = _ObjectCallMethod( items , "AddItem", 100000.27);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '|||-') +  ' <fgcolor=808080>(grouping character is -)'`");
_ObjectCallMethod( grid , "EndUpdate");

683
How can I display numbers with 2 digits in each group

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectCallMethod(grid, "ExecuteTemplate", "Columns.Add(`Def`).Def(17) = 1");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", 100000.27);
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '') +  ' <fgcolor=808080>(default)'`");
	h = _ObjectCallMethod( items , "AddItem", 100000.27);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '||2') +  ' <fgcolor=808080>(grouping by 2 digits)'`");
_ObjectCallMethod( grid , "EndUpdate");

682
How can I display my numbers using a different decimal separator

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectCallMethod(grid, "ExecuteTemplate", "Columns.Add(`Def`).Def(17) = 1");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", 100.27);
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '') +  ' <fgcolor=808080>(default)'`");
	h = _ObjectCallMethod( items , "AddItem", 100.27);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '|;') +  ' <fgcolor=808080>(decimal separator is <b>;</b>)'`");
_ObjectCallMethod( grid , "EndUpdate");

681
Is it possible to display the numbers using 3 (three) digits

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectCallMethod(grid, "ExecuteTemplate", "Columns.Add(`Def`).Def(17) = 1");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", 100.27);
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '') +  ' <fgcolor=808080>(default)'`");
	h = _ObjectCallMethod( items , "AddItem", 100.27);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format '3') +  ' <fgcolor=808080>(3 digits)'`");
	h = _ObjectCallMethod( items , "AddItem", 100.27);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format 2) +  '  <fgcolor=808080>(2 digits)'`");
	h = _ObjectCallMethod( items , "AddItem", 100.27);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `(value format 1) +  ' <fgcolor=808080>(1 digit)'`");
_ObjectCallMethod( grid , "EndUpdate");

680
Is there any option to show the tooltip programmatically

// MouseMove event - Occurs when the user moves the mouse.
FUNCTION gridEvents_MouseMove(OBJECT grid, INT Button, INT Shift, INT X, INT Y)
	_ObjectCallMethod(grid, "TemplatePut", "Dim c,hit")
	_ObjectCallMethod(grid, "TemplatePut", c)
	_ObjectCallMethod(grid, "TemplatePut", hit)
	_ObjectCallMethod( grid , "ShowToolTip", _ObjectCallMethod(grid, "ExecuteTemplate", "ItemFromPoint(-1,-1,c,hit)"),"","8","8");
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Def");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", "Item 1");
	_ObjectCallMethod( items , "AddItem", "Item 2");
	_ObjectCallMethod( items , "AddItem", "Item 3");
_ObjectCallMethod( grid , "EndUpdate");

679
How can I specify the column's width to be the same for all columns

OBJECT columns,grid;

grid =  ObjectByName("AN1") ;
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectCallMethod( columns , "Add", "A");
	_ObjectCallMethod( columns , "Add", "B");
	_ObjectCallMethod( columns , "Add", "C");
_ObjectSetProperty( grid , "DrawGridLines", -1);
_ObjectSetProperty( grid , "ColumnAutoResize", -1);

678
How can I set the column's width to my desired width

OBJECT columns,grid;

grid =  ObjectByName("AN1") ;
_ObjectSetProperty( grid , "ColumnAutoResize", 0);
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "A") , "Width", 128);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "B") , "Width", 128);
_ObjectSetProperty( grid , "DrawGridLines", -1);

677
Is it possible to format numbers

OBJECT column,columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectCallMethod( columns , "Add", "Name");
	column = _ObjectCallMethod( columns , "Add", "A");
		_ObjectSetProperty( column , "SortType", 1);
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 36);
		_ObjectSetProperty( column , "FormatColumn", "len(value) ? value + ' +'");
		_ObjectSetProperty( _ObjectGetProperty( column , "Editor") , "EditType", 4);
	column = _ObjectCallMethod( columns , "Add", "B");
		_ObjectSetProperty( column , "SortType", 1);
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 36);
		_ObjectSetProperty( column , "FormatColumn", "len(value) ? value + ' +'");
		_ObjectSetProperty( _ObjectGetProperty( column , "Editor") , "EditType", 4);
	column = _ObjectCallMethod( columns , "Add", "C");
		_ObjectSetProperty( column , "SortType", 1);
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 36);
		_ObjectSetProperty( column , "FormatColumn", "len(value) ? value + ' ='");
		_ObjectSetProperty( _ObjectGetProperty( column , "Editor") , "EditType", 4);
	column = _ObjectCallMethod( columns , "Add", "A+B+C");
		_ObjectSetProperty( column , "SortType", 1);
		_ObjectSetProperty( column , "Width", 64);
		_ObjectSetProperty( column , "ComputedField", "dbl(%1)+dbl(%2)+dbl(%3)");
		_ObjectSetProperty( column , "FormatColumn", "type(value) in (0,1) ? 'null' : ( dbl(value)<0 ? '<fgcolor=FF0000>'+ (value format '2|.|3|,|1' ) : (dbl(value)>0 ? '<fgcolor=00" +
	"00FF>+'+(value format '2|.|3|,' ): '0.00') )");
		_ObjectCallMethod(grid, "TemplatePut", "Dim colObj")
		_ObjectCallMethod(grid, "TemplatePut", column)
		_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(17) = 1");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Root");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,4) = 2");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h1")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h1)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 7");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = 3");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = 1");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = -2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = -2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = -4");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 3");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = -4");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");

676
How can I collapse all items

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Items");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Root 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	h = _ObjectCallMethod( items , "AddItem", "Root 2");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(0) = False");
_ObjectCallMethod( grid , "EndUpdate");

675
How can I expand all items

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Items");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Root 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	h = _ObjectCallMethod( items , "AddItem", "Root 2");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(0) = True");
_ObjectCallMethod( grid , "EndUpdate");

674
Can I display a total field without having to add a child item

OBJECT column,editor,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Numbers");
	_ObjectSetProperty( column , "SortType", 1);
	editor = _ObjectGetProperty( column , "Editor");
		_ObjectSetProperty( editor , "EditType", 4);
		_ObjectSetProperty( editor , "Numeric", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", 1);
	_ObjectCallMethod( items , "AddItem", 2);
	_ObjectCallMethod( items , "AddItem", 3);
	_ObjectCallMethod( items , "AddItem", 4);
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.LockedItemCount(2) = 1");
	h = _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.LockedItem(2,0)");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,0) = `sum(all,dir,dbl(%0))`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,0) = 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `'SUM: '+value`");
_ObjectCallMethod( grid , "EndUpdate");

673
Can I display the number of child items

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", 1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Root 1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	hx = _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SplitCell(h,0)");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,hx")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", hx)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(0,hx) = `count(current,dir,1)`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(0,hx) = 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(0,hx) = `'Childs: ' + value`");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "AddItem", "Root 2");
	hx = _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SplitCell(h,0)");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,hx")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", hx)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(0,hx) = `count(current,dir,1)`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(0,hx) = 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(0,hx) = `'Childs: ' + value`");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 3");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 4");
_ObjectCallMethod( grid , "EndUpdate");

672
My field does not display the correctly computed value if I enter data using the control's editors ( concatenation of strings ). What am I doing wrong

OBJECT editor,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "T");
editor = _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "A") , "Editor");
	_ObjectSetProperty( editor , "Numeric", -1);
	_ObjectSetProperty( editor , "EditType", 4);
editor = _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "B") , "Editor");
	_ObjectSetProperty( editor , "Numeric", -1);
	_ObjectSetProperty( editor , "EditType", 4);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "A+B");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Incorrect");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellToolTip(h,0) = `Just type a number in the column A or B. The result will be concaternated`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = `10`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,2) = `20`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,3) = `currency(%1+%2)`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,3) = 2");
	h = _ObjectCallMethod( items , "AddItem", "Correct");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = 10");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,2) = 20");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,3) = `currency(dbl(%1)+dbl(%2))`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,3) = 2");
_ObjectCallMethod( grid , "EndUpdate");

671
The CellValue/CellCaption property gets the result of a computed/total field with text formatting. Is it possible to get that value without text formatting

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "A") , "Editor") , "EditType", 4);
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "B") , "Editor") , "EditType", 4);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "A+B");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", 10);
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = 20");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,2) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,2) = `currency(dbl(%0)+dbl(%1))`");
	Message( "CellCaption returns " );
	Message( _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellCaption(h,2)") );
	Message( "CellValue returns " );
	Message( _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,2)") );
	Message( "ComputeValue returns " );
	Message( _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ComputeValue(`dbl(%0)+dbl(%1)`,h,0,CellValueFormat(h,2))") );
_ObjectCallMethod( grid , "EndUpdate");

670
Can I get the result of a specified formula as your control does using the ComputedField property
OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "A");
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "B");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", 10);
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = 20");
	Message( "A+B is " );
	Message( _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ComputeValue(`dbl(%0)+dbl(%1)`,h,0,2)") );
_ObjectCallMethod( grid , "EndUpdate");

669
Is it possible to get the text without HTML formatting

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "<b>bold</b>");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	Message( _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ComputeValue(CellValue(h,0),h,0,1)") );
_ObjectCallMethod( grid , "EndUpdate");

668
Can I specify an item to be a separator

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "TreeColumnIndex", -1);
_ObjectSetProperty( grid , "SortOnClick", 0);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Numbers");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", 1);
	_ObjectCallMethod( items , "AddItem", 2);
	h = _ObjectCallMethod( items , "AddItem", "separator");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectableItem(h) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDivider(h) = 0");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLineAlignment(h) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLine(h) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 1");
	_ObjectCallMethod( items , "AddItem", 3);
	_ObjectCallMethod( items , "AddItem", 4);
_ObjectCallMethod( grid , "EndUpdate");

667
How can I count only non-zero values

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Numbers") , "SortType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", 1);
	_ObjectCallMethod( items , "AddItem", 2);
	_ObjectCallMethod( items , "AddItem", 0);
	_ObjectCallMethod( items , "AddItem", 0);
	_ObjectCallMethod( items , "AddItem", 0);
	_ObjectCallMethod( items , "AddItem", 0);
	_ObjectCallMethod( items , "AddItem", 3);
	_ObjectCallMethod( items , "AddItem", 4);
	h = _ObjectCallMethod( items , "AddItem", "sum(all,dir,dbl(%0)?1:0)");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,0) = 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `'COUNT non-zero: '+value`");
_ObjectCallMethod( grid , "EndUpdate");

666
How can I add a AVG ( average ) field

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Numbers") , "SortType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", 1);
	_ObjectCallMethod( items , "AddItem", 2);
	_ObjectCallMethod( items , "AddItem", 3);
	_ObjectCallMethod( items , "AddItem", 4);
	h = _ObjectCallMethod( items , "AddItem", "avg(all,dir,dbl(%0))");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,0) = 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `'AVG: '+value`");
_ObjectCallMethod( grid , "EndUpdate");

665
How can I add a COUNT field

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Numbers") , "SortType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", 1);
	_ObjectCallMethod( items , "AddItem", 2);
	_ObjectCallMethod( items , "AddItem", 3);
	_ObjectCallMethod( items , "AddItem", 4);
	h = _ObjectCallMethod( items , "AddItem", "count(all,dir,0)");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,0) = 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `'COUNT: '+value`");
_ObjectCallMethod( grid , "EndUpdate");

664
How can I add a MAX field

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Numbers") , "SortType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", 1);
	_ObjectCallMethod( items , "AddItem", 2);
	_ObjectCallMethod( items , "AddItem", 3);
	_ObjectCallMethod( items , "AddItem", 4);
	h = _ObjectCallMethod( items , "AddItem", "max(all,dir,dbl(%0))");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,0) = 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `'MAX: '+value`");
_ObjectCallMethod( grid , "EndUpdate");

663
How can I add a MIN or MAX field (for numbers)

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Numbers") , "SortType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", 11);
	_ObjectCallMethod( items , "AddItem", 21);
	_ObjectCallMethod( items , "AddItem", 3);
	_ObjectCallMethod( items , "AddItem", 4);
	h = _ObjectCallMethod( items , "AddItem", "min(all,dir,dbl(%0))");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,0) = 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `'MIN: '+value`");
	h = _ObjectCallMethod( items , "AddItem", "max(all,dir,dbl(%0))");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,0) = 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `'MAX: '+value`");
_ObjectCallMethod( grid , "EndUpdate");

662
How can I add a SUM field

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Numbers") , "SortType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", 1);
	_ObjectCallMethod( items , "AddItem", 2);
	_ObjectCallMethod( items , "AddItem", 3);
	_ObjectCallMethod( items , "AddItem", 4);
	h = _ObjectCallMethod( items , "AddItem", "sum(all,dir,dbl(%0))");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,0) = 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `'SUM: '+value`");
_ObjectCallMethod( grid , "EndUpdate");

661
How can I add total and subtotals fields

// Change event - Occurs when the user changes the cell's content.
FUNCTION gridEvents_Change(OBJECT grid, INT Item, INT ColIndex, VARIANT NewValue)
	_ObjectCallMethod( grid , "Refresh");
END

OBJECT column,editor,grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", 1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Members");
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Values");
	_ObjectSetProperty( column , "FormatColumn", "currency(value)");
	editor = _ObjectGetProperty( column , "Editor");
		_ObjectSetProperty( editor , "EditType", 4);
		_ObjectSetProperty( editor , "Numeric", -1);
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Group 1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemBold(h) = True");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellEditorVisible(h,1) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = `sum(current,dir,dbl(%1))`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,1) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,1) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 1`),1) = 10");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 2`),1) = 20");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 3`),1) = 30");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "AddItem", "Group 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemBold(h) = True");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellEditorVisible(h,1) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = `sum(current,dir,dbl(%1))`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,1) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,1) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 1`),1) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 2`),1) = 15");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 3`),1) = 35");
	h = _ObjectCallMethod( items , "AddItem", "total");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = `sum(all,rec,dbl(%1))`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,1) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellEditorVisible(h,1) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,1) = `'Total: <b>' + currency(value)`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,1) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDivider(h) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLineAlignment(h) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLine(h) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
_ObjectCallMethod( grid , "EndUpdate");

660
Is is possible to have subtotal items, and a grand total item

// Change event - Occurs when the user changes the cell's content.
FUNCTION gridEvents_Change(OBJECT grid, INT Item, INT ColIndex, VARIANT NewValue)
	_ObjectCallMethod( grid , "Refresh");
END

OBJECT column,editor,grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "BackColor", 16777215);
_ObjectSetProperty( grid , "LinesAtRoot", 1);
_ObjectSetProperty( grid , "ShowFocusRect", 0);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Members");
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Values");
	_ObjectSetProperty( column , "FormatColumn", "currency(value)");
	editor = _ObjectGetProperty( column , "Editor");
		_ObjectSetProperty( editor , "EditType", 4);
		_ObjectSetProperty( editor , "Numeric", -1);
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Group 1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemBold(h) = True");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellEditorVisible(h,1) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,1) = ` `");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 1`),1) = 10");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 2`),1) = 20");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 3`),1) = 30");
	hT = _ObjectCallMethod( items , "InsertItem", h,"","subtotal");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,hT")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", hT)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(hT,1) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellEditorVisible(hT,1) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(hT,1) = `sum(parent,dir,dbl(%1))`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(hT,1) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(hT,1) = `'subtotal: <b>' + currency(value)`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDivider(hT) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLineAlignment(hT) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(hT) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectableItem(hT) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLine(hT) = 3");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "AddItem", "Group 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemBold(h) = True");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,1) = ` `");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellEditorVisible(h,1) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 1`),1) = 15");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 2`),1) = 25");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 3`),1) = 18");
	hT = _ObjectCallMethod( items , "InsertItem", h,"","subtotal");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,hT")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", hT)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(hT,1) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellEditorVisible(hT,1) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(hT,1) = `sum(parent,dir,dbl(%1))`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(hT,1) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(hT,1) = `'subtotal: <b>' + currency(value)`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDivider(hT) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLineAlignment(hT) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLine(hT) = 3");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(hT) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectableItem(hT) = False");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "AddItem", "total");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = `sum(all,rec,dbl(%1))`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,1) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellEditorVisible(h,1) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,1) = `'Total: <b><font ;11>' + currency(value)`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,1) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDivider(h) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLineAlignment(h) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLine(h) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectableItem(h) = False");
_ObjectCallMethod( grid , "EndUpdate");

659
Is it possible to have a total field for each column

// Change event - Occurs when the user changes the cell's content.
FUNCTION gridEvents_Change(OBJECT grid, INT Item, INT ColIndex, VARIANT NewValue)
	_ObjectCallMethod( grid , "Refresh");
END

OBJECT column,editor,grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "C1");
	editor = _ObjectGetProperty( column , "Editor");
		_ObjectSetProperty( editor , "Numeric", -1);
		_ObjectSetProperty( editor , "EditType", 4);
	_ObjectSetProperty( column , "SortType", 1);
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "C2");
	editor = _ObjectGetProperty( column , "Editor");
		_ObjectSetProperty( editor , "Numeric", -1);
		_ObjectSetProperty( editor , "EditType", 4);
	_ObjectSetProperty( column , "SortType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.LockedItemCount(2) = 1");
	h = _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.LockedItem(2,0)");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemBackColor(h) = 15790320");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemBold(h) = True");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,0) = `sum(all,dir,dbl(%0))`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,0) = 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = `sum(all,dir,dbl(%1))`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,1) = 4");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(10),1) = 12");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(25),1) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(31),1) = 17");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(48),1) = 22");
_ObjectCallMethod( grid , "EndUpdate");

658
How can I add a total field for a DataSource being used

// Change event - Occurs when the user changes the cell's content.
FUNCTION gridEvents_Change(OBJECT grid, INT Item, INT ColIndex, VARIANT NewValue)
	_ObjectCallMethod( grid , "Refresh");
END

OBJECT grid,items,rs;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectSetProperty( grid , "ColumnAutoResize", 0);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
rs = CreateObject("ADOR.Recordset");
	_ObjectCallMethod( rs , "Open", "Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb",3,3);
_ObjectSetProperty( grid , "DataSource", rs);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.LockedItemCount(0) = 1");
	h = _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.LockedItem(0,0)");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDivider(h) = 0");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,0) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,0) = `sum(all,dir,%1)`");

657
How can I add a total field

// Change event - Occurs when the user changes the cell's content.
FUNCTION gridEvents_Change(OBJECT grid, INT Item, INT ColIndex, VARIANT NewValue)
	_ObjectCallMethod( grid , "Refresh");
END

OBJECT column,editor,grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
column = _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Numbers");
	editor = _ObjectGetProperty( column , "Editor");
		_ObjectSetProperty( editor , "Numeric", -1);
		_ObjectSetProperty( editor , "EditType", 4);
	_ObjectSetProperty( column , "SortType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.LockedItemCount(0) = 1");
	h = _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.LockedItem(0,0)");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemBackColor(h) = 15790320");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,0) = `sum(all,dir,dbl(%0))`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,0) = 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,0) = `'Total: '+value`");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", 10);
	_ObjectCallMethod( items , "AddItem", 25);
	_ObjectCallMethod( items , "AddItem", 31);
	_ObjectCallMethod( items , "AddItem", 48);
_ObjectCallMethod( grid , "EndUpdate");

656
How can I add a total field

// Change event - Occurs when the user changes the cell's content.
FUNCTION gridEvents_Change(OBJECT grid, INT Item, INT ColIndex, VARIANT NewValue)
	_ObjectCallMethod( grid , "Refresh");
END

OBJECT editor,grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
editor = _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Items") , "Editor");
	_ObjectSetProperty( editor , "EditType", 4);
	_ObjectSetProperty( editor , "Numeric", -1);
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Group 1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellEditorVisible(h,0) = False");
	_ObjectCallMethod( items , "InsertItem", h,"",10);
	_ObjectCallMethod( items , "InsertItem", h,"",20);
	_ObjectCallMethod( items , "InsertItem", h,"",30);
	hT = _ObjectCallMethod( items , "InsertItem", h,"","sum(parent,dir,dbl(%0))");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,hT")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", hT)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellEditorVisible(hT,0) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(hT,0) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDivider(hT) = 0");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLineAlignment(hT) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectableItem(hT) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(hT) = False");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");

655
Is it possible to specify the cell's value but still want to display some formatted text instead the value

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Value");
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "FormatCell");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", 1);
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = 12");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,1) = `currency(value)`");
	h = _ObjectCallMethod( items , "AddItem", #1/1/2001#);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = #1/1/2001#");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,1) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,1) = `longdate(value) replace '2001' with '<b>2001</b>'`");
_ObjectCallMethod( grid , "EndUpdate");

654
How can I simulate displaying groups

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectSetProperty( grid , "HasLines", 0);
_ObjectSetProperty( grid , "ScrollBySingleLine", -1);
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectCallMethod( columns , "Add", "Name");
	_ObjectCallMethod( columns , "Add", "A");
	_ObjectCallMethod( columns , "Add", "B");
	_ObjectCallMethod( columns , "Add", "C");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Group 1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDivider(h) = 0");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLineAlignment(h) = 3");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemHeight(h) = 24");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h1")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h1)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = 3");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = 6");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "AddItem", "Group 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDivider(h) = 0");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLineAlignment(h) = 3");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemHeight(h) = 24");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h1")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h1)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = 3");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = 6");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");

653
Is it possible to specify the cell's value but still want to display some formatted text instead the value

OBJECT column,columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectCallMethod( columns , "Add", "Name");
	column = _ObjectCallMethod( columns , "Add", "Values");
		_ObjectSetProperty( column , "SortType", 1);
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 64);
		_ObjectSetProperty( column , "FormatColumn", "((0:=dbl(value)) < 10? '<fgcolor=808080><font ;7>' :'<b>') + currency(=:0)");
		_ObjectCallMethod(grid, "TemplatePut", "Dim colObj")
		_ObjectCallMethod(grid, "TemplatePut", column)
		_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(17) = 1");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Root");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,1) = `'<none>'`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 1`),1) = 10");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 2`),1) = 15");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 3`),1) = 25");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");

652
I am using the FormatColumn to display the current currency, but would like hide some values. Is it possible

OBJECT column,columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectCallMethod( columns , "Add", "Name");
	column = _ObjectCallMethod( columns , "Add", "Values");
		_ObjectSetProperty( column , "SortType", 1);
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 64);
		_ObjectSetProperty( column , "FormatColumn", "((0:=dbl(value)) < 10? '<fgcolor=808080><font ;7>' :'<b>') + currency(=:0)");
		_ObjectCallMethod(grid, "TemplatePut", "Dim colObj")
		_ObjectCallMethod(grid, "TemplatePut", column)
		_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(17) = 1");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Root");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FormatCell(h,1) = ` `");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 1`),1) = 10");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 2`),1) = 15");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Child 3`),1) = 25");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");

651
How can I specify an item to be always the first item

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "TreeColumnIndex", -1);
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Numbers") , "SortType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", 1);
	_ObjectCallMethod( items , "AddItem", 2);
	_ObjectCallMethod( items , "AddItem", 3);
	_ObjectCallMethod( items , "AddItem", 4);
	h = _ObjectCallMethod( items , "AddItem", "first");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemPosition(h) = 0");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod( items , "SortChildren", 0,0,0);
_ObjectCallMethod( grid , "EndUpdate");

650
How can I specify an item to be always the last item

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "TreeColumnIndex", -1);
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Numbers") , "SortType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", 1);
	_ObjectCallMethod( items , "AddItem", 2);
	_ObjectCallMethod( items , "AddItem", 3);
	_ObjectCallMethod( items , "AddItem", 4);
	h = _ObjectCallMethod( items , "AddItem", "last");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod( items , "SortChildren", 0,0,-1);
_ObjectCallMethod( grid , "EndUpdate");

649
Can I allow sorting only the child items

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Childs");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Root 1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "AddItem", "Root 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");

648
Can I specify a terminal item so it will mark the end of childs

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ScrollBySingleLine", -1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "P1");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Root 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "InsertItem", h,"","");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDivider(h) = 0");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLineAlignment(h) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemHeight(h) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectableItem(h) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	h = _ObjectCallMethod( items , "AddItem", "Root 2");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "InsertItem", h,"","");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDivider(h) = 0");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDividerLineAlignment(h) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemHeight(h) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectableItem(h) = False");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
_ObjectCallMethod( grid , "EndUpdate");

647
Is it possible to specify an item being unsortable so its position won't be changed after sorting

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "TreeColumnIndex", -1);
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Numbers") , "SortType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", 1);
	_ObjectCallMethod( items , "AddItem", 2);
	_ObjectCallMethod( items , "AddItem", 3);
	_ObjectCallMethod( items , "AddItem", 4);
	h = _ObjectCallMethod( items , "AddItem", "top 3");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemPosition(h) = 3");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SortableItem(h) = False");
	_ObjectCallMethod( items , "SortChildren", 0,0,0);
_ObjectCallMethod( grid , "EndUpdate");

646
Is it possible to move an item from a parent to another

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Items");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", "A");
	_ObjectCallMethod( items , "AddItem", "B");
	_ObjectCallMethod( items , "InsertItem", _ObjectCallMethod( items , "AddItem", "C"),"","D");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod( items , "SetParent", _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FindItem(`D`,0)"),_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FindItem(`A`,0)"));
_ObjectCallMethod( grid , "EndUpdate");

645
How can I change the identation for an item

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Items");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", "A");
	_ObjectCallMethod( items , "AddItem", "B");
	_ObjectCallMethod( items , "InsertItem", _ObjectCallMethod( items , "AddItem", "C"),"","D");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod( items , "SetParent", _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.FindItem(`D`,0)"),0);
_ObjectCallMethod( grid , "EndUpdate");

644
How can I arrange the control's header on multiple levels

OBJECT column,columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "DefaultItemHeight", 48);
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Visible", 0);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "FirstName") , "Visible", 0);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "LastName") , "Visible", 0);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Photo") , "Visible", 0);
	column = _ObjectCallMethod( columns , "Add", "Address");
		_ObjectSetProperty( column , "Visible", 0);
		_ObjectCallMethod(grid, "TemplatePut", "Dim colObj")
		_ObjectCallMethod(grid, "TemplatePut", column)
		_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(16) = False");
	column = _ObjectCallMethod( columns , "Add", "Personal Info");
		_ObjectSetProperty( column , "FormatLevel", "3:48,(0/1/2),4:96");
		_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(32) = `3:48,(0/1/2),4:96`");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Sales Representative");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = `Nancy`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,2) = `Davolio`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellPicture(h,3) = Me.ExecuteTemplate(`loadpicture(`c:\exontrol\images\zipdisk.gif`)`)");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,4) = `507-20th Ave. E.Apt.  2A`");
_ObjectCallMethod( grid , "EndUpdate");

643
How can I filter programatically using more columns

OBJECT column,columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectCallMethod( columns , "Add", "Car");
	_ObjectCallMethod( columns , "Add", "Equipment");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(`Mazda`),1) = `Air Bag`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(`Toyota`),1) = `Air Bag,Air condition`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(`Ford`),1) = `Air condition`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(`Nissan`),1) = `Air Bag,ABS,ESP`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(`Mazda`),1) = `Air Bag, ABS,ESP`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(`Mazda`),1) = `ABS,ESP`");
column = _ObjectCallMethod(grid, "ExecuteTemplate", "Columns.Item(`Car`)");
	_ObjectSetProperty( column , "FilterType", 240);
	_ObjectSetProperty( column , "Filter", "Mazda");
column = _ObjectCallMethod(grid, "ExecuteTemplate", "Columns.Item(`Equipment`)");
	_ObjectSetProperty( column , "FilterType", 3);
	_ObjectSetProperty( column , "Filter", "*ABS*|*ESP*");
_ObjectCallMethod( grid , "ApplyFilter");
_ObjectCallMethod( grid , "EndUpdate");

642
How can I show the ticks for a single slider field

OBJECT editor,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Slider") , "Editor") , "EditType", 20);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", 10);
	editor = _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellEditor(AddItem(20),0)");
		_ObjectSetProperty( editor , "EditType", 20);
		_ObjectCallMethod(grid, "TemplatePut", "Dim ediObj")
		_ObjectCallMethod(grid, "TemplatePut", editor)
		_ObjectCallMethod(grid, "ExecuteTemplate", "ediObj.Option(53) = 10");
	_ObjectCallMethod( items , "AddItem", 30);
_ObjectCallMethod( grid , "EndUpdate");

641
Is it possible to show ticks for slider fields

OBJECT editor,grid;

grid =  ObjectByName("AN1") ;
editor = _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Slider") , "Editor");
	_ObjectSetProperty( editor , "EditType", 20);
	_ObjectCallMethod(grid, "TemplatePut", "Dim ediObj")
	_ObjectCallMethod(grid, "TemplatePut", editor)
	_ObjectCallMethod(grid, "ExecuteTemplate", "ediObj.Option(53) = 10");
_ObjectCallMethod( _ObjectGetProperty( grid , "Items") , "AddItem", 10);

640
Is it possible to colour a particular column, I mean the cell's foreground color

OBJECT columns,conditionalformat,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
conditionalformat = _ObjectCallMethod( _ObjectGetProperty( grid , "ConditionalFormats") , "Add", "1");
	_ObjectSetProperty( conditionalformat , "ForeColor", 255);
	_ObjectSetProperty( conditionalformat , "ApplyTo", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectCallMethod( columns , "Add", "Column 1");
	_ObjectCallMethod( columns , "Add", "Column 2");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(0),1) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(2),1) = 3");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(4),1) = 5");
_ObjectCallMethod( grid , "EndUpdate");

639
Is it possible to colour a particular column for specified values

OBJECT columns,conditionalformat,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
conditionalformat = _ObjectCallMethod( _ObjectGetProperty( grid , "ConditionalFormats") , "Add", "int(%1) in (3,4,5)");
	_ObjectSetProperty( conditionalformat , "BackColor", 255);
	_ObjectSetProperty( conditionalformat , "ApplyTo", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectCallMethod( columns , "Add", "Column 1");
	_ObjectCallMethod( columns , "Add", "Column 2");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(0),1) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(2),1) = 3");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(4),1) = 5");
_ObjectCallMethod( grid , "EndUpdate");

638
Is it possible to colour a particular column

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectCallMethod( columns , "Add", "Column 1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim colObj")
	_ObjectCallMethod(grid, "TemplatePut", columns)
	_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Add(`Column 2`).Def(4) = 255");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(0),1) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(2),1) = 3");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(4),1) = 5");
_ObjectCallMethod( grid , "EndUpdate");

637
How do i get all the children items that are under a certain parent Item handle
OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "P");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Root");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	hChild = _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemChild(FirstVisibleItem)");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,hChild")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", hChild)
	Message( _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(hChild,0)") );
	Message( _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(NextSiblingItem(hChild),0)") );
_ObjectCallMethod( grid , "EndUpdate");

636
Is is possible to use HTML tags to display in the filter caption

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarCaption", "This is a bit of text being displayed in the filter bar.");
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", "Item 1");
	_ObjectCallMethod( items , "AddItem", "Item 2");
	_ObjectCallMethod( items , "AddItem", "Item 3");
_ObjectCallMethod( grid , "EndUpdate");

635
How can I find the number of items after filtering
OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,0) = VisibleItemCount");
_ObjectCallMethod( grid , "EndUpdate");

634
How can I change the filter caption

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPromptType", 12801);
_ObjectSetProperty( grid , "FilterBarPromptPattern", "london robert");
_ObjectSetProperty( grid , "FilterBarCaption", "<r>Found: ... ");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

633
While using the filter prompt is it is possible to use wild characters

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPromptType", 16);
_ObjectSetProperty( grid , "FilterBarPromptPattern", "lon* seat*");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

632
How can I list all items that contains any of specified words, not necessary at the beggining

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPromptType", 4610);
_ObjectSetProperty( grid , "FilterBarPromptPattern", "london davolio");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

631
How can I list all items that contains any of specified words, not strings

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPromptType", 12802);
_ObjectSetProperty( grid , "FilterBarPromptPattern", "london nancy");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

630
How can I list all items that contains all specified words, not strings

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPromptType", 12801);
_ObjectSetProperty( grid , "FilterBarPromptPattern", "london robert");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

629
I've noticed that the filtering by prompt is not case sensitive, is is possible to make it case sensitive

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPromptType", 258);
_ObjectSetProperty( grid , "FilterBarPromptPattern", "Anne");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

628
Is it possible to list only items that ends with any of specified strings

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPromptType", 4);
_ObjectSetProperty( grid , "FilterBarPromptColumns", "0");
_ObjectSetProperty( grid , "FilterBarPromptPattern", "Fuller");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

627
Is it possible to list only items that ends with any of specified strings

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPromptType", 4);
_ObjectSetProperty( grid , "FilterBarPromptColumns", "0");
_ObjectSetProperty( grid , "FilterBarPromptPattern", "Fuller");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

626
Is it possible to list only items that starts with any of specified strings

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPromptType", 3);
_ObjectSetProperty( grid , "FilterBarPromptColumns", "0");
_ObjectSetProperty( grid , "FilterBarPromptPattern", "An M");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

625
Is it possible to list only items that starts with specified string

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPromptType", 3);
_ObjectSetProperty( grid , "FilterBarPromptColumns", "0");
_ObjectSetProperty( grid , "FilterBarPromptPattern", "A");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

624
How can I specify that the list should include any of the seqeunces in the pattern

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPromptType", 2);
_ObjectSetProperty( grid , "FilterBarPromptPattern", "london seattle");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

623
How can I specify that all sequences in the filter pattern must be included in the list

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPromptType", 1);
_ObjectSetProperty( grid , "FilterBarPromptPattern", "london manager");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

622
How do I change at runtime the filter prompt

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPromptPattern", "london manager");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

621
How do I specify to filter only a single column when using the filter prompt

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPromptColumns", "2,3");
_ObjectSetProperty( grid , "FilterBarPromptPattern", "london");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

620
How do I change the prompt or the caption being displayed in the filter bar

OBJECT columns,grid;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
_ObjectSetProperty( grid , "FilterBarPrompt", "changed");
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
_ObjectCallMethod( grid , "EndUpdate");

619
How do I enable the filter prompt feature

OBJECT columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "ColumnAutoResize", -1);
_ObjectSetProperty( grid , "ContinueColumnScroll", 0);
_ObjectSetProperty( grid , "FocusColumnIndex", 1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "SearchColumnIndex", 1);
_ObjectSetProperty( grid , "FilterBarPromptVisible", 1);
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Name") , "Width", 96);
	_ObjectSetProperty( _ObjectCallMethod( columns , "Add", "Title") , "Width", 96);
	_ObjectCallMethod( columns , "Add", "City");
items = _ObjectGetProperty( grid , "Items");
	h0 = _ObjectCallMethod( items , "AddItem", "Nancy Davolio");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h0")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h0)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Andrew Fuller");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Vice President, Sales`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Tacoma`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h0) = True");
	h0 = _ObjectCallMethod( items , "AddItem", "Janet Leverling");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Kirkland`");
	h0 = _ObjectCallMethod( items , "AddItem", "Margaret Peacock");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Redmond`");
	h0 = _ObjectCallMethod( items , "AddItem", "Steven Buchanan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Manager`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Michael Suyama");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Robert King");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
	h0 = _ObjectCallMethod( items , "AddItem", "Laura Callahan");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Inside Sales Coordinator`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `Seattle`");
	h0 = _ObjectCallMethod( items , "AddItem", "Anne Dodsworth");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,1) = `Sales Representative`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h0,2) = `London`");
_ObjectCallMethod( grid , "EndUpdate");

618
How can I control the colors that can be applied to an EBN part

// Change event - Occurs when the user changes the cell's content.
FUNCTION gridEvents_Change(OBJECT grid, INT Item, INT ColIndex, VARIANT NewValue)
	OBJECT items;
	items = _ObjectGetProperty( grid , "Items");
		_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
		_ObjectCallMethod(grid, "TemplatePut", items)
		_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemBackColor(FirstVisibleItem) = NewValue");
END

OBJECT appearance,column,columns,editor,grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
appearance = _ObjectGetProperty( grid , "VisualAppearance");
	_ObjectCallMethod( appearance , "Add", 2,"c:\exontrol\images\normal.ebn");
	_ObjectCallMethod( appearance , "Add", 1,"CP:2 10 3 -10 -5");
_ObjectSetProperty( grid , "SelBackColor", _ObjectGetProperty( grid , "BackColor"));
_ObjectSetProperty( grid , "SelForeColor", _ObjectGetProperty( grid , "ForeColor"));
_ObjectSetProperty( grid , "ScrollBySingleLine", -1);
_ObjectSetProperty( grid , "TreeColumnIndex", -1);
columns = _ObjectGetProperty( grid , "Columns");
	column = _ObjectCallMethod( columns , "Add", "Test");
		_ObjectSetProperty( column , "Width", 32);
	column = _ObjectCallMethod( columns , "Add", "RGB");
		editor = _ObjectGetProperty( column , "Editor");
			_ObjectSetProperty( editor , "EditType", 20);
			_ObjectCallMethod(grid, "TemplatePut", "Dim ediObj")
			_ObjectCallMethod(grid, "TemplatePut", editor)
			_ObjectCallMethod(grid, "ExecuteTemplate", "ediObj.Option(44) = 255");
			_ObjectCallMethod(grid, "ExecuteTemplate", "ediObj.Option(41) = -60");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellHAlignment(h,0) = 1");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemDivider(h) = 0");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemBackColor(h) = 16777216");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemHeight(h) = 36");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectableItem(h) = False");
	h = _ObjectCallMethod( items , "InsertItem", 0,1,"Red");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = 255");
	h = _ObjectCallMethod( items , "InsertItem", 0,255,"Green");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = 255");
	h = _ObjectCallMethod( items , "InsertItem", 0,65536,"Blue");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = 255");
_ObjectCallMethod( grid , "EndUpdate");

617
I know this is fairly basic, but could you send me a sample that places a tree in the first column

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "heading");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Parent 1");
	_ObjectCallMethod( items , "InsertItem", h,"","Child A");
	_ObjectCallMethod( items , "InsertItem", _ObjectCallMethod( items , "InsertItem", h,"","Child B"),"","GrandChild C");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "AddItem", "Parent 2");
	_ObjectCallMethod( items , "InsertItem", h,"","Child D");
	_ObjectCallMethod( items , "InsertItem", h,"","Child E");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");

616
How can I get the caption of focused item
// SelectionChanged event - Fired after a new item has been selected.
FUNCTION gridEvents_SelectionChanged()
	OBJECT items;
	items = _ObjectGetProperty( grid , "Items");
		_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
		_ObjectCallMethod(grid, "TemplatePut", items)
		Message( "Handle" );
		Message( _ObjectGetProperty( items , "FocusItem") );
		Message( "Caption" );
		Message( _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellCaption(FocusItem,0)") );
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Items");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "R1");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 1.1");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 1.2");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "AddItem", "R2");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 2.1");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 2.2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");

615
How can I get the caption of selected item
// SelectionChanged event - Fired after a new item has been selected.
FUNCTION gridEvents_SelectionChanged()
	OBJECT items;
	items = _ObjectGetProperty( grid , "Items");
		_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
		_ObjectCallMethod(grid, "TemplatePut", items)
		Message( "Handle" );
		Message( _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectedItem(0)") );
		Message( "Caption" );
		Message( _ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellCaption(SelectedItem(0),0)") );
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Items");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "R1");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 1.1");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 1.2");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "AddItem", "R2");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 2.1");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 2.2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");

614
Is it possible to let users selects cells as in Excel

OBJECT column,columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "FullRowSelect", 1);
_ObjectSetProperty( grid , "SingleSel", 0);
_ObjectSetProperty( grid , "ReadOnly", -1);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( grid , "ShowFocusRect", 0);
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectSetProperty( grid , "SelForeColor", 0);
_ObjectSetProperty( grid , "SelBackColor", 15917512);
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectCallMethod( columns , "Add", "A");
	column = _ObjectCallMethod( columns , "Add", "B");
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 24);
	column = _ObjectCallMethod( columns , "Add", "C");
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 24);
		_ObjectCallMethod(grid, "TemplatePut", "Dim colObj")
		_ObjectCallMethod(grid, "TemplatePut", column)
		_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(0) = 1");
		_ObjectSetProperty( column , "PartialCheck", -1);
	column = _ObjectCallMethod( columns , "Add", "D");
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 24);
		_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(1) = 1");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "InsertItem", "","","Group 1");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"",16);
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h1")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h1)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 17");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"",2);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 11");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"",2);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ItemBackColor(h1) = 15790320");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 9");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "InsertItem", "","","Group 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,2) = 1");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"",16);
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h1")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h1)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 9");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"",12);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 11");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"",2);
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 2");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.SelectItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");

613
Is it possible to change the style for the vertical or horizontal grid lines, in the list area

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "DrawGridLines", -1);
_ObjectSetProperty( grid , "GridLineStyle", 33);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "C1");
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "C2");
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "C3");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Item 1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = `SubItem 1.2`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,2) = `SubItem 1.3`");
	h = _ObjectCallMethod( items , "AddItem", "Item 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = `SubItem 2.2`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,2) = `SubItem 2.3`");
_ObjectCallMethod( grid , "EndUpdate");

612
Is it possible to change the style for the grid lines, for instance to be solid not dotted

OBJECT grid;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "DrawGridLines", -1);
_ObjectSetProperty( grid , "GridLineStyle", 48);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Column");
_ObjectCallMethod( grid , "EndUpdate");

611
I have some buttons added on the control's scroll bar, how can I can know when the button is being clicked

// ScrollButtonClick event - Occurs when the user clicks a button in the scrollbar.
FUNCTION gridEvents_ScrollButtonClick(OBJECT grid, INT ScrollBar, INT ScrollPart)
	Message( ScrollBar );
	Message( ScrollPart );
END

OBJECT grid;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod(grid, "ExecuteTemplate", "ScrollPartVisible(1,32768) = True");
_ObjectCallMethod(grid, "ExecuteTemplate", "ScrollPartVisible(1,16384) = True");
_ObjectCallMethod(grid, "ExecuteTemplate", "ScrollPartVisible(1,1) = True");
_ObjectCallMethod(grid, "ExecuteTemplate", "ScrollPartVisible(1,2) = True");
_ObjectSetProperty( grid , "ScrollBars", 5);

610
How do I get notified once the user clicks a hyperlink created using the anchor HTML tag

// AnchorClick event - Occurs when an anchor element is clicked.
FUNCTION gridEvents_AnchorClick(OBJECT grid, STRING AnchorID, STRING Options)
	Message( AnchorID );
	Message( Options );
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod(grid, "ExecuteTemplate", "Columns.Add(`Default`).Def(17) = 1");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod( items , "AddItem", "This is a link: <aex.com;1>www.exontrol.com</a>");
	_ObjectCallMethod( items , "AddItem", "This is a link: <aex.net;2>www.exontrol.net</a>");

609
Is it possible to start editing a cell when double click it

// DblClick event - Occurs when the user dblclk the left mouse button over an object.
FUNCTION gridEvents_DblClick(OBJECT grid, INT Shift, INT X, INT Y)
	_ObjectCallMethod( grid , "Edit", );
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "AutoEdit", 0);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Edit1") , "Editor") , "EditType", 1);
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Edit2") , "Editor") , "EditType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(1),1) = 2");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(3),1) = 4");
_ObjectCallMethod( grid , "EndUpdate");

608
Is it possible to disable standard single-click behavior for this column, so I manually could call Edit() when needed

// DblClick event - Occurs when the user dblclk the left mouse button over an object.
FUNCTION gridEvents_DblClick(OBJECT grid, INT Shift, INT X, INT Y)
	_ObjectCallMethod( grid , "Edit", );
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "AutoEdit", 0);
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Edit1") , "Editor") , "EditType", 1);
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Edit2") , "Editor") , "EditType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(1),1) = 2");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(3),1) = 4");
_ObjectCallMethod( grid , "EndUpdate");

607
How can I get or restore the old or previously value for the cell being changed
// Change event - Occurs when the user changes the cell's content.
FUNCTION gridEvents_Change(OBJECT grid, INT Item, INT ColIndex, VARIANT NewValue)
	_ObjectCallMethod(grid, "TemplatePut", "Dim _ObObj,ColIndex,Item")
	_ObjectCallMethod(grid, "TemplatePut", _ObjectGetProperty( grid , "Items"))
	_ObjectCallMethod(grid, "TemplatePut", ColIndex)
	_ObjectCallMethod(grid, "TemplatePut", Item)
	Message( "Old-Value:" );
	Message( _ObjectCallMethod(grid, "ExecuteTemplate", "_ObObj.CellValue(Item,ColIndex)") );
	Message( "New-Value:" );
	Message( NewValue );
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Edit1") , "Editor") , "EditType", 1);
_ObjectSetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Edit2") , "Editor") , "EditType", 1);
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(1),1) = 2");
items = _ObjectGetProperty( grid , "Items");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(AddItem(3),1) = 4");
_ObjectCallMethod( grid , "EndUpdate");

606
How can I get the item from the cursor
// MouseMove event - Occurs when the user moves the mouse.
FUNCTION gridEvents_MouseMove(OBJECT grid, INT Button, INT Shift, INT X, INT Y)
	_ObjectCallMethod(grid, "TemplatePut", "Dim c,hit")
	_ObjectCallMethod(grid, "TemplatePut", c)
	_ObjectCallMethod(grid, "TemplatePut", hit)
	h = _ObjectCallMethod(grid, "ExecuteTemplate", "ItemFromPoint(-1,-1,c,hit)");
	_ObjectCallMethod(grid, "TemplatePut", "Dim _ObObj,h")
	_ObjectCallMethod(grid, "TemplatePut", _ObjectGetProperty( grid , "Items"))
	_ObjectCallMethod(grid, "TemplatePut", h)
	Message( "Handle" );
	Message( h );
	Message( "Index" );
	Message( _ObjectCallMethod(grid, "ExecuteTemplate", "_ObObj.ItemToIndex(h)") );
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectSetProperty( grid , "DrawGridLines", 1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Items");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "R1");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 1.1");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 1.2");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "AddItem", "R2");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 2.1");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 2.2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");

605
How can I get the column from the cursor, not only in the header

// MouseMove event - Occurs when the user moves the mouse.
FUNCTION gridEvents_MouseMove(OBJECT grid, INT Button, INT Shift, INT X, INT Y)
	Message( _ObjectCallMethod(grid, "ExecuteTemplate", "ColumnFromPoint(-1,0)") );
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "P1");
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "P2");
_ObjectSetProperty( grid , "DrawGridLines", -1);
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "R1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = `R2`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Cell 1.1`),1) = `Cell 1.2`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Cell 2.1`),1) = `Cell 2.2`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");

604
How can I get the column from the cursor

// MouseMove event - Occurs when the user moves the mouse.
FUNCTION gridEvents_MouseMove(OBJECT grid, INT Button, INT Shift, INT X, INT Y)
	Message( _ObjectCallMethod(grid, "ExecuteTemplate", "ColumnFromPoint(-1,-1)") );
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectSetProperty( grid , "DrawGridLines", -1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "P1");
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "P2");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "R1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h,1) = `R2`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Cell 1.1`),1) = `Cell 1.2`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(InsertItem(h,,`Cell 2.1`),1) = `Cell 2.2`");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");

603
How can I get the cell's caption from the cursor
// MouseMove event - Occurs when the user moves the mouse.
FUNCTION gridEvents_MouseMove(OBJECT grid, INT Button, INT Shift, INT X, INT Y)
	_ObjectCallMethod(grid, "TemplatePut", "Dim c,hit")
	_ObjectCallMethod(grid, "TemplatePut", c)
	_ObjectCallMethod(grid, "TemplatePut", hit)
	h = _ObjectCallMethod(grid, "ExecuteTemplate", "ItemFromPoint(-1,-1,c,hit)");
	_ObjectCallMethod(grid, "TemplatePut", "Dim _ObObj,c,h")
	_ObjectCallMethod(grid, "TemplatePut", _ObjectGetProperty( grid , "Items"))
	_ObjectCallMethod(grid, "TemplatePut", c)
	_ObjectCallMethod(grid, "TemplatePut", h)
	Message( _ObjectCallMethod(grid, "ExecuteTemplate", "_ObObj.CellCaption(h,c)") );
END

OBJECT grid,items;

grid =  ObjectByName("AN1") ;
ObjectAssociateEvents("gridEvents", grid);
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "LinesAtRoot", -1);
_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Items");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "R1");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 1.1");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 1.2");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
	h = _ObjectCallMethod( items , "AddItem", "R2");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 2.1");
	_ObjectCallMethod( items , "InsertItem", h,"","Cell 2.2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");

602
How can I customize the items based on the values in the cells

OBJECT column,columns,conditionalformat,conditionalformats,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
conditionalformats = _ObjectGetProperty( grid , "ConditionalFormats");
	conditionalformat = _ObjectCallMethod( conditionalformats , "Add", "%1 >4");
		_ObjectSetProperty( conditionalformat , "Bold", -1);
		_ObjectSetProperty( conditionalformat , "StrikeOut", -1);
		_ObjectSetProperty( conditionalformat , "ForeColor", 255);
		_ObjectSetProperty( conditionalformat , "ApplyTo", -1);
	conditionalformat = _ObjectCallMethod( conditionalformats , "Add", "%2 > 4");
		_ObjectSetProperty( conditionalformat , "Bold", -1);
		_ObjectSetProperty( conditionalformat , "StrikeOut", -1);
		_ObjectSetProperty( conditionalformat , "ForeColor", 255);
		_ObjectSetProperty( conditionalformat , "ApplyTo", 2);
	conditionalformat = _ObjectCallMethod( conditionalformats , "Add", "%3 > 4");
		_ObjectSetProperty( conditionalformat , "Bold", -1);
		_ObjectSetProperty( conditionalformat , "StrikeOut", -1);
		_ObjectSetProperty( conditionalformat , "ForeColor", 255);
		_ObjectSetProperty( conditionalformat , "ApplyTo", 3);
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectCallMethod( columns , "Add", "Name");
	column = _ObjectCallMethod( columns , "Add", "A");
		_ObjectSetProperty( column , "SortType", 1);
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 36);
		_ObjectSetProperty( column , "FormatColumn", "len(value) ? value + ' +'");
		_ObjectSetProperty( _ObjectGetProperty( column , "Editor") , "EditType", 4);
	column = _ObjectCallMethod( columns , "Add", "B");
		_ObjectSetProperty( column , "SortType", 1);
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 36);
		_ObjectSetProperty( column , "FormatColumn", "len(value) ? value + ' +'");
		_ObjectSetProperty( _ObjectGetProperty( column , "Editor") , "EditType", 4);
	column = _ObjectCallMethod( columns , "Add", "C");
		_ObjectSetProperty( column , "SortType", 1);
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 36);
		_ObjectSetProperty( column , "FormatColumn", "len(value) ? value + ' ='");
		_ObjectSetProperty( _ObjectGetProperty( column , "Editor") , "EditType", 4);
	column = _ObjectCallMethod( columns , "Add", "A+B+C");
		_ObjectSetProperty( column , "SortType", 1);
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 64);
		_ObjectSetProperty( column , "ComputedField", "%1+%2+%3");
		_ObjectSetProperty( column , "FormatColumn", "((0:=dbl(value)) < 10? '<fgcolor=808080><font ;7>' :'<b>') + currency(=:0)");
		_ObjectCallMethod(grid, "TemplatePut", "Dim colObj")
		_ObjectCallMethod(grid, "TemplatePut", column)
		_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(17) = 1");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Root");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,4) = 2");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h1")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h1)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 7");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = 3");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = 1");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = 12");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 3");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = 4");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = 9");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = 4");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");

601
Is it is possible to have a column computing values from other columns

OBJECT column,columns,grid,items;

grid =  ObjectByName("AN1") ;
_ObjectCallMethod( grid , "BeginUpdate");
_ObjectSetProperty( grid , "MarkSearchColumn", 0);
columns = _ObjectGetProperty( grid , "Columns");
	_ObjectCallMethod( columns , "Add", "Name");
	column = _ObjectCallMethod( columns , "Add", "A");
		_ObjectSetProperty( column , "SortType", 1);
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 36);
		_ObjectSetProperty( column , "FormatColumn", "len(value) ? value + ' +'");
		_ObjectSetProperty( _ObjectGetProperty( column , "Editor") , "EditType", 4);
	column = _ObjectCallMethod( columns , "Add", "B");
		_ObjectSetProperty( column , "SortType", 1);
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 36);
		_ObjectSetProperty( column , "FormatColumn", "len(value) ? value + ' +'");
		_ObjectSetProperty( _ObjectGetProperty( column , "Editor") , "EditType", 4);
	column = _ObjectCallMethod( columns , "Add", "C");
		_ObjectSetProperty( column , "SortType", 1);
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 36);
		_ObjectSetProperty( column , "FormatColumn", "len(value) ? value + ' ='");
		_ObjectSetProperty( _ObjectGetProperty( column , "Editor") , "EditType", 4);
	column = _ObjectCallMethod( columns , "Add", "A+B+C");
		_ObjectSetProperty( column , "SortType", 1);
		_ObjectSetProperty( column , "AllowSizing", 0);
		_ObjectSetProperty( column , "Width", 64);
		_ObjectSetProperty( column , "ComputedField", "%1+%2+%3");
		_ObjectSetProperty( column , "FormatColumn", "((0:=dbl(value)) < 10? '<fgcolor=808080><font ;7>' :'<b>') + currency(=:0)");
		_ObjectCallMethod(grid, "TemplatePut", "Dim colObj")
		_ObjectCallMethod(grid, "TemplatePut", column)
		_ObjectCallMethod(grid, "ExecuteTemplate", "colObj.Def(17) = 1");
items = _ObjectGetProperty( grid , "Items");
	h = _ObjectCallMethod( items , "AddItem", "Root");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValueFormat(h,4) = 2");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 1");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h1")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h1)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 7");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = 3");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = 1");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = 5");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = 12");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 3");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = 4");
	h1 = _ObjectCallMethod( items , "InsertItem", h,"","Child 4");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,1) = 2");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,2) = 9");
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.CellValue(h1,3) = 4");
	_ObjectCallMethod(grid, "TemplatePut", "Dim iteObj,h")
	_ObjectCallMethod(grid, "TemplatePut", items)
	_ObjectCallMethod(grid, "TemplatePut", h)
	_ObjectCallMethod(grid, "ExecuteTemplate", "iteObj.ExpandItem(h) = True");
_ObjectCallMethod( grid , "EndUpdate");